﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

using SOAPServices.Persistencia;
using SOAPServices.Dominio;

namespace SOAPServices
{
    public class Clientes : IClientes
    {
        private ClienteDAO clienteDAO = null;
        private ClienteDAO ClienteDAO
        {
            get
            {
                if (clienteDAO == null)
                    clienteDAO = new ClienteDAO();
                return clienteDAO;
            }
        }


        public Cliente CrearCliente(string ClienteNombre, string ClienteApellidos, string NumDocumento)
        {
            Cliente v = new Cliente()
            {
                txtClienteNombre = ClienteNombre,
                txtClienteApellido = ClienteApellidos,
                NumDocumento  = NumDocumento
            };
            try
            {
                List<Cliente> a = ListarCliente();
                foreach (Cliente i in a)
                {
                    if (i.NumDocumento == NumDocumento)
                        throw new FaultException("Cliente Ya existe, por favor ingresar nuevamente.");
                }
            }

            catch (FaultException ex)
            {
                throw ex;
            }
            return ClienteDAO.Crear(v);

        }

        public Cliente ObtenerCliente(int codigo)
        {
            return ClienteDAO.Obtener(codigo);
        }

        public Cliente ModificarCliente(int Codigo, string ClienteNombre, string ClienteApellidos, string NumDocumento)
        {
            Cliente v = new Cliente()
            {
                idCliente = Codigo,
                txtClienteNombre = ClienteNombre,
                txtClienteApellido = ClienteApellidos,
                NumDocumento = NumDocumento
            };
            return ClienteDAO.Modificar(v);
        }

        public void EliminarCliente(int codigo)
        {
            Cliente v = ClienteDAO.Obtener(codigo);
            ClienteDAO.Eliminar(v);
        }

        public List<Cliente> ListarCliente()
        {
            return ClienteDAO.ListarTodos().ToList();
        }
    }
}
